Skip to main content

Full text of "dg :: software :: aos :: 093-000195-02 AOS Debugger and Disk File Editor UM Jun78 raw"

See other formats


Advanced 

Operating System 

(AOS) 

Debugger 

and 

Disk File Editor 

User's Manual 

093-000195-02 



For the latest enhancements, cautions, documentation 
changes, and other information on this product, please see 
the Release Notice (08 5 -series) supplied with the software. 



Ordering No. 093-000195 

©Data General Corporation, 1976 1977, 1978 

All Rights Reserved 

Printed in the United States of America 

Revision 02, June 1978 

Licensed Material - Property of Data General Corporation 



DataGeneral 

software documentation Licensed Material - Property of Data General Corporation 

NOTICE 

Data General Corporation (DGC) has prepared this manual for use by DGC personnel, licensees, 
and customers. The information contained herein is the property of DGC and shall not be 
reproduced in whole or in part without DGC prior written approval. 

DGC reserves the right to make changes without notice in the specifications and materials 
contained herein and shall not be responsible for any damages (including consequential) caused by 
reliance on the materials presented, including but not limited to typographical, arithmetic, or listing 
errors. 



Advanced Operating System 

(AOS) 

Debugger and Disk File Editor 

User's Manual 

093-000195 



Revision History: 



Original Release - April 1976 
First Revision - April 1977 
Second Revision - June 1978 



This document has been extensively revised from revision 01; therefore, 
change indicators have not been used. 



The following are trademarks of Data General Corporation, Westboro, Massachusetts: 

U.S. Registered Trademarks Trademarks 

CONTOUR I INFOS NOVALITE DASHER 

DATAPREP NOVA SUPERNOVA microNOVA 

ECLIPSE NOVADISC 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Preface 



This manual describes the Advanced Operating System 
(AOS) Debugger and its companion utility, the AOS 
Disk File Editor (called DEDIT). Both are interactive 
programs which you execute from the Command Line 
Interpreter (CLI). The Disk File Editor commands are 
a subset of Debugger commands. In AOS, executable 
programs (.PR files) are stored on disk precisely as they 
will be brought into memory and executed. 
Corresponding addresses on disk and in main memory 
have the same contents. Commands that affect memory 
locations in the Debugger affect disk locations when 
you execute DEDIT. The changes you make with the 
Debugger are effective only for that run of the 
Debugger; when you exit from it, the changes are 
wiped out. DEDIT changes, however, and Debugger 
changes in a shared area, are permanent and remain in 
the disk file. 

You can use DEDIT to edit any kind of file on disk (a 
data file, for example). Normally, you correct a program 
using the Debugger, test it, and then make the changes 
permanent; you can make permanent changes to the 
disk file using DEDIT. Eventually, you will want to 
make permanent changes to the source program using 
the text editor; you then reassemble or recompile the 
source program and rebind it. 



The Debugger and Disk File Editor User's Manual is 
organized as follows: 

Chapter 1 Introduces the Debugger utility. All 
material in Chapter 1, except for the 
command that calls the Debugger and the 
material on breakpoints and on starting 
user program execution, applies also to 
the Disk File Editor. 

Chapter 2 Describes arithmetic, logical and Boolean 
expressions. You can use these in both 
DEBUG and DEDIT. 

Chapter 3 Explains the DEBUG/DEDIT 2-part 
address mechanism which allows you to 
access any bit, byte or word location in 
your memory area (Debugger) or disk file 
(DEDIT). 

Chapter 4 Describes Debugger commands. Those 
that do not apply to the Disk File Editor 
are noted. 

Chapter 5 Explains DEDIT -- how to invoke DEDIT 
from the CLI. 



Although you can debug programs written in 
higher-level languages, like FORTRAN, you must 
know what assembly-language statements your 
compiler produces. To correct higher-level language 
programs, you may find that the runtime error 
messages guide you to problem areas more quickly. 
Your compiler manual will help you interpret these 
messages. 

If you are completely unfamiliar with the debugging 
process, read the chapter in Learning to Use Your 
Advanced Operating System (093-000196) which contains 
a sample debugging session on an assembly-language 
program. 



Appendix A Explains the DEBUG and DEDIT error 
messages. 

Appendix B Summarizes DEBUG and DEDIT 
commands for easy reference. 

Appendix C Explains how to check the ANSI status of 
your console, since it determines which 
key you press for the new-line and 
(CR/LF) functions. 



093-000195-02 



Preface 



DataGeneral 

SOFTWARE DOCUMENTATION 

Correcting Typing Errors 

You can correct your typing errors in either of the 
following ways: 

• Press the RUBOUT key to delete the 
previously-typed character and backspace the cursor. 
For example: 

P 302 (RUBOUT) (RUBOUT)) 

deletes 2 and and repositions the cursor: 

P3_ 

• Press CTRL-U to delete the entire command line. 

Reader, Please Note: 

The Debugger and Disk File Editor differ from other 
AOS programs (like the CLI) in that they do not treat 
the new-line, carriage-return and line feed keys on your 
console the same. 

In this manual, the key you press to type an ASCII 012 
is called a new-line and is represented in formats as }. 
The key you press to type an ASCII 015 is represented 
in this book as (CR/LF). You use a new-line to delimit 
most DEBUG/DEDIT commands; (CR/LF) is itself a 
command. 

ANSI-standard terminals have a new-line key and a 
carriage-return key on their keyboards; non-ANSI 
terminals have a carriage-return key and a line-feed 
key. Appendix B describes how to tell whether your 
terminal is an ANSI or non-ANSI standard model and 
whether its device characteristics are properly matched; 
it describes which key you would press for a new-line 
character and which for a (CR/LF). 



Licensed Material - Property of Data General Corporation 

Other notation conventions we use in this manual are: 

COMMAND required [optional] ... 

Where Means 

COMMAND You must enter the command (or 
its accepted abbreviation) as 
shown. 

required You must enter some argument 

(such as a Filename). Sometimes, 
we use: 

required 1 
required 2 

which means you must enter one of 
the arguments. Don't enter the 
braces; they only set off the choice. 

[optional] You have the option of entering 

some argument. Don't enter the 
brackets; they only set off what's 
optional. 

You may repeat the preceding 
entry or entries. The explanation 
will tell you exactly what you may 
repeat. 

I SHIFT-N. Press the SHIFT and N 

keys to produce j. 



All numbers are octal unless we indicate otherwise by 
using a decimal point; 3., for example. 

Finally, we usually show all examples of entries and 
system responses in THIS TYPEFACE. But, where we 
must clearly differentiate your entries from system 
responses in a dialog, we will use 

THIS TYPEFACE TO SHOW YOUR ENTRY) 

THIS TYPEFACE FOR THE SYSTEM RESPONSE 



093-000195-02 



DataGeneral 

Licensed Material - Property of Data General Corporation software documentation 



Contents 



Chapter 1 - Introduction 

Entering and Terminating the Debugger l_l 

Debugger Command Formats \.\ 

Temporary Variables l_2 

Debugger Error Response 1_2 

Chapter 2 - Expressions 

Definition of an Expression 2-1 

Evaluating an Expression 2-1 

Definition of Expression Operators 2-1 

Arithmetic Operators 2-1 

Indirect Operator @ 2-2 

Logical Operators 2-2 

Boolean Arithmetic Operators 2-3 

Hierarchy of Operator Evaluation 2-3 

Using Assembler Instructions in Expressions 2-4 

Characters 2-4 

Chapter 3 - Debugger Addressing 

DOT Symbol (Period) 3 . 2 

Chapter 4 - Debugger Commands 

Breakpoint-Related Commands 4_1 

Set a Breakpoint 4_1 

Examine Breakpoints 4_2 

Delete Breakpoints 4_3 

Start User Program Execution 4.3 

Set Variable Command 4.3 

Display Accumulator Command 4_3 



093-000195-02 



Contents 



DataGeneral 

software documentation Licensed Material - Property of Data General Corporation 

Chapter 4 (continued) 

Location-Related Commands 4-3 

Display Contents of a Location 4-3 

Modify Contents of a Location 4-4 

Display the Next Data Item 4-4 

Display the Previous Data Item 4-4 

Display a Range of Data Items 4-5 

Suppress Symbols 4-5 

Display an ASCII String 4-6 

Mode-Related Commands 4-6 

Display Current Display Modes 4-7 

Display Last Item with Different Display Modes 4-7 

Floating-Point Accumulator-Related Commands 4-8 

Set Floating-Point Accumulator 4-8 

Display Contents of a Floating-Point Accumulator 4-8 

Floating-Point Status 4-8 

Display Linked Elements 4-8 

Compute an Expression and Display its Result 4-9 

Interpret an Error Code 4-9 

Append a Symbol Table 4-9 

LOG Commands 4-9 

Debugging Shared Libraries 4-9 

Terminate the Debugger 4-10 

Chapter 5 - AOS Disk File Editor (DEDIT) 

Appendix A - Error Messages 

Appendix B - DEBUG/DEDIT Command Formats 

Breakpoint Commands (Do not apply to DEDIT) B-l 

All Other Commands B-l 

Appendix C - Command Terminator Keys and ANSI and 
Non-ANSI Standard Consoles 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Chapter 1 
Introduction 



Debugging is the process of detecting, locating, and 
removing errors from your program. When you are 
debugging a program, you can control its execution and 
halt it at specified addresses. 

With the debugging commands, you can: 

• Monitor and alter memory locations, accumulators, 
and the carry bit. 

• Set, delete, and examine breakpoints. 

• Restart program execution at desired points within 
the program. 

• Set the Debugger output format. 



• Display portions 
debugging it. 



After you determine the addresses and set the desired 
breakpoints, you start execution of the program. When 
it reaches a breakpoint, the program halts before 
executing the instruction at the breakpoint location. At 
this point you issue debugging commands. Then you 
can restart program execution either at this address, or 
at some other address within the program. 

Entering and Terminating the 
Debugger 

To debug a program, enter the following CLI 
command: 

DEBUG pathname [arguments-for-process] ) 

pathname is either a filename in the working directory, 
or a pathname indicating the location of the file outside 
of the working directory. Pathnames are fully explained 
in the A OS Programmer's Manual. 



For example: 

DEBUG MYPROGRAM) 

loads MYPROGRAM and enters the Debugger. 

You can also enter the Debugger by coding the system 
call ? DEBUG in your program at the point where you 
want to transfer control to the Debugger. Like other 
system calls, 7DEBUG has an error and normal return, 
and when you key the P (proceed) Debugger 
command, the Debugger will return control to your 
program at the normal return. 

After you successfully enter the Debugger, it displays 
the following prompt: 



of the program while you're + 



You then key in debugging commands immediately 
following the plus sign. 

When you have completed debugging your program, 
return to the CLI by keying the command. 

BYE) 



Debugger Command Formats 

one of two 



You input a Debugger command 
different formats: 



in 



Type 1. command-code [u arg [;arg]...] ) 
Type 2. [arg[;argj... J keystroke-command 

A Type 1 command consists of a command-code, 
followed optionally by a blank and a list of from one to 
n arguments. When you supply two or more 
arguments, you must separate them with semicolons 
(;). You terminate the command line by keying in a 
new-line character ( ) ) as described in the Preface. 



093-000195-02 



1-1 



Debugger Command Formats 



DataGeneral 

SOFTWARE DOCUMENTATION 



For example: 

P) 

The P command-code directs the Debugger to proceed 
with program execution. In this example the program 
begins program execution at the address contained in 
the location counter. 

A Type 2 command consists of an optional argument 
list (where optional arguments are in lowercase italic 
letters), followed by a single-character 
keystroke-command. An argument consists of one or 
more ASCII characters. When you supply two or more 
arguments, you must separate them with semicolons 
(;). The single keystroke-command determines the 
action. The boldface lowercase words in the format 
indicate that you must supply both the appropriate 
arguments and the keystroke-command terminator. In 
this manual, user input IS IN THIS TYPEFACE; 
Debugger output IS IN THIS TYPEFACE. 

For example: 

3105:000075 + 

The Debugger displays the contents of the location 
referenced by octal address 3105; the colon (:) 
keystroke-command specifies the display action. The 
contents of the location are displayed after you type the 
colon. 

You can also use the colon alone (without an 
argument). In this case, the Debugger uses the 
contents of the last displayed location as the address of 
the next location to be displayed. 

Example: 

3105: 000050 + (display contents of location 3105) 
: 000007 (display contents of location 50) 

Other keystroke-commands include the equal sign 
( = ), (CR/LF), and | (SHIFT-N). 



Temporary Variables 



When you use the Debugger, you can 
temporary variables using the SET command. 



define 



Licensed Material - Property of Data General Corporation 

command. The values of any temporary variables are 
maintained only until you return to the CLI. 

The following special symbols are the temporary 
variables maintained by the Debugger. You can use 
them in an expression as you would any symbol. (Note: 
You cannot use these special Debugger variables in the 
Disk File Editor, but you can still use the SET 
command to define your own temporary variables 
when you are in DEDIT.) 

Symbol Represents 

#P 



Current program counter (points to a 
breakpoint when the program halts) 



#C 
#0 

#1 

#2 
#3 
#R 



The Debugger itself maintains a special set of 
temporary variables. You can change these variables, 
just as you would your own variables, using the SET 



Carry bit 

Accumulator (AC0) 

Accumulator 1 (AC1) 

Accumulator 2 (AC2) 

Accumulator 3 (AC3) 

Result of the last-executed " = " command 

If you have the floating-point option: 

Symbol Represents 

#FS1 High-order part of floating-point status 
#FS2 Low-order part of floating-point status 

Examples: 

#1 = 001400 

Displays the contents of accumulator 1. 

#1%EQ%1400 = 000001 

In this example the contents of accumulator 1 are 
001400. The comparison is true. 

Debugger Error Response 

The Debugger checks all command lines for syntax 
errors. If it detects an error, it displays an appropriate 
error message; you can then enter the correct 
command. For a list of Debugger error messages and 
their meanings, see Appendix A. 



End of Chapter 



1-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Chapter 2 
Expressions 



Definition of an Expression 

An expression is a combination of variables, constants, 
special Debugger symbols, user-program symbols, and 
operators. Spaces can be used in expressions for 
legibility and are optional items. 

Evaluating an Expression 

You can have the Debugger evaluate an expression and 
either display the result, or use the result as an address 
and display the contents of that location. In both cases, 
the format is: 



expressions 






> RETURNED VALUE 



Using the equal sign will give you the numerical value 
of the expression, while the colon will give you the 
contents of the location symbolized by the expression. 

Example: 

Given the following locations and their contents 



Address 


Contents 


0015 


000035 


0016 


002002 


0017 


010236 


0020 


000007 


15 + 3= 20 




15 + 3: 000007 + 



The octal digits 1 5 and 3 are the expression constants, 
the plus sign ( + ) is the arithmetic operator, and the 
equal sign and colon are the keystroke-commands. 
Notice that you do not use the new-line key ( ) ) after 
the keystroke command. 

NOTE: The Debugger accepts constants as octal values. 
You can, however, enter decimal constants by 
keying one or more digits, immediately 
followed by a decimal point. 



Definition of Expression Operators 

The Debugger recognizes four types of expression 
operators: 



• Arithmetic 

• Indirect operator ( (i 

• Logical 

• Boolean arithmetic 



Operator 



+ 



/ 
() 



Arithmetic Operators 

Operation 

Addition and unary plus 

Subtraction and unary minus 

Multiplication 

Division 

Parentheses, when used algebraically. 



NOTE: If you use the division operator (/), the type of 
divide performed depends on the sign submode 
(see "Changing Display Modes" in Chapter 4). 
If the sign submode is US, an unsigned divide is 
performed. If the submode is SI, a signed divide 
is performed. 



Examples: 

3 + 2 + 1= 6 

Octal constants and octal result. 

10-3= 5 

Octal constants and octal result. 

8. + 2.= 12 

Decimal constants and octal result. 



093-000195-02 



2-1 



Arithmetic Operators 



DataGeneral 

SOFTWARE DOCUMENTATION 
11/3= 3 

Octal constants and octal result. 

7/2 = 3 

Octal constants and octal result. The Debugger 
truncates the result. 

2*3 + 4= 12 

Octal constants and octal result. 

2*(3 + 4)= 16 

Octal constants and octal result. 

Assume the following ,is part of an assembly-language 
program: 

.ENTABC 
.NREL 



ABC: LDAO,B 
LDA1,C 
ADD 1,0 
MOV 0,2 



B: 
C: 



3 
4 



You can use the symbol ABC in an expression since the 
symbol is referenced in the .ENT statement. Assume 
the instruction LDA 0,B has been loaded in the user 
process area at location 1400. Then 

ABC= 1400 

displays the address of ABC, and 

ABC + 3 = 1403 

displays the address of the MOV 0,2 instruction. 



Indirect Operator @ 

When you use the commercial AT sign ( @ ) within an 
expression, the Debugger evaluates the expression 
using the contents of a location. The AT sign must 
immediately precede the location's address, and 
implies "use the contents of the location instead of the 
address". 



Licensed Material - Property of Data General Corporation 

Examples: 

Given the following addresses and their contents: 

Address Contents 



001400 


001500 


001401 


000007 


001 500 


001600 


001 600 


000050 


@1400 + 1 = 


= 1501 



Add 1 to the contents of location 1400 
(1500+1 = 1501). 

@(1400+1)= 7 

Note that the Debugger does not evaluate this in the 
same way as the first example, but evaluates the 
expression in the following manner: first it evaluates 
the parenthetical expression (1400+1) and uses this as 
the address, then it displays the contents of location 
1401. 

@ 1400: 001600 + 

uses contents of location 001400 (1500) as the address 
and displays contents of location 001500. 

@@1 400: 000050 + 

This illustrates a double level of indirection. The 
Debugger uses the contents of location 1400 (1500) as 
the first address; uses the contents of that location 
(1600) as the second address; and displays the contents 
of that location. 



Logical Operators 

Logical operators compare values. When you use a 
logical operator in an expression, the comparison 
returns a value of 1 if true, and if false. The Debugger 
compares expression values following algebraic rules. 



The following logical operators compare two 
signed integers (in twos-complement form). 

Operator Operation 



16-bit 



%EQ% 


Equal to 


%LT% 


Less than 


%LE% 


Less than or equal to 


%GE% 


Greater than or equal to 


%GT% 


Greater than 


%NE% 


Not equal 



2-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 

Examples: 

5%EQ%5= 1 

5%GT%6= 

6%NE%5= 1 

0%GT%-1 = 1 

Note that you enter a negative number by preceding 
the value with a minus sign (-). 

@1401%EQ%7= 1 

In this example the contents of location 1401 are 
000007. The Debugger evaluates the expression using 
the location's contents. 

The following logical operators compare two 16-bit 
unsigned integers. 

Operator Operation 

%EQ% Equal to 

%ULT% Less than 

%ULE% Less than or equal to 

%UGE% Greater than or equal to 

%UGT% Greater than 

%NE% Not equal 

Note that the EQ and NE operators are the same for 
both signed and unsigned logical compare operations. 

Examples: 

5%EQ%6= 

6%NE%7= 1 

5%UGE%5= 1 

3%UGT%6= 

8.%ULE%11= 1 

Decimal 8 less than octal 11 

-1%UGT%0= 1 

This and the example below are true because the 
comparison is of 16-bit integers, with no sign bit. 

-3%ULE%5= 1 



DataGeneral 

SOFTWARE DOCUMENTATION 

Boolean Arithmetic Operators 

The following operators perform Boolean arithmetic 
operations. 

Operator Operation 



%AND% Logical and 
%OR% Inclusive or 
%XOR% Exclusive or 




Examples: 




6%AND%3= 2 




14%OR%3= 17 




13%OR%6= 17 




12%XOR%6= 14 




(5%LT%6)%OR%(3%GE%7)= 1 




The expression is evaluated as follows: 


(5%LT%6)%OR%(3%GE%7)= 1 




1 %OR% 




1 = 1 




(7%GT%1 0)%AND%(6%ULE%4) = 


-0 



Hierarchy of Operator Evaluation 

The Debugger evaluates expression operators in the 
sequence shown in the following table. You can enclose 
portions in parentheses (as in algebraic notation) to 
modify the order of evaluation. 



Operator 



Operation 

Indirect 



+,- 


Unary plus and minus 


V 


Multiplication and division 


+,- 


Addition and subtraction 


%EQ%,%LT%,%LE%, 
%GE%,%GT%,%NE%, 
%ULT%,%ULE%, 
%UGE%,%UGT% 


Arithmetic comparisons (all 
of equal priority) 



%AND%, %OR%, %XOR% Boolean 



093-000195-02 



2-3 



Hierarchy of Operator Evaluation 



DataGeneral 



SOFTWARE DOCUMENTATION 

Examples: 

5 + 3*2= 13 

5 + 3*-2 = 177777 

6+3%AND%5+5= 10 

5%LT%6%AND%79.%ULE%4%OR%10%NE%7= 1 

This expression is evaluated as follows: 

5%LT%6%AND%79.%ULE%4%OR%10%NE%7= 1 
1 %AND% %OR% 1 
%OR% 1 

1 = 1 



Any intermediate values the Debugger generates while 
computing an expression's value will be truncated to 
the least significant 16 bits. 



Using Assembler Instructions in 
Expressions 

You can use Macroassembler instructions in Debugger 
expressions. To do so, you must enclose the instruction 
within angle brackets, < >. The Debugger then 
assembles the instruction and evaluates it as a 16-bit 
integer, which it uses in further computations in place 
of the instruction. The symbols # and @, when used 
inside angle brackets, retain the meaning assigned to 
them by the Macroassembler. 



Licensed Material - Property of Data General Corporation 

Examples: 

<LDA3 16>+5= 34023 

<JSR @ 17>= 6017 

Characters 

You can type any ASCII characters which are not 
self-delimiting commands (comma, colon, etc.). To 
insert a single ASCII character, precede it with the 
quote character ("). To insert a pair of ASCII characters 
in a word, use the format a*400 + b where a and b are 
the characters to be inserted. You can use characters in 
this form in any expression. 

The following example displays location 1000 and 
replaces its contents with ASCII " A": 

1000: 000000+ "A) 

In the example below, the Debugger again displays 
location 1000 and replaces its contents with ASCII 
"A". This time the (CR/LF) delimiter displays the 
next location's contents. 

1000: 000000+ "A(CR/LF) 
1001:000401 + 

In the following example, the Debugger inserts an 
ASCII "A" in the left byte of location 1000 and a "B" 
in the right byte. 

4- 1000: 000000+ "A*400 + "B) 

The CR/LF delimiter could be used instead of new-line 
). In this case, the Debugger would also display the 
next location's contents. 



End of Chapter 



2-4 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Chapter 3 
Debugger Addressing 



The Debugger uses a two-part address to reference 
locations in the user process area. The first part 
(base-address) is a number or symbol that references a 
16-bit word; the second part (offset) is the number of 
words, bytes, or bits added to the base-address. By 
using this two-part address, you can reference any bit, 
byte, or word location in the user process area. 

"Address" in this manual indicates you can use any of 
the following addressing formats (where base-address 
and offset refer to any valid Debugger expression): 

base-address &address-mode-character offset 

base-address &address-mode-character 

&address-mode-character offset 

offset (Uses preset default address mode.) 

The base-address is the address of a word in the user 
process area. The ampersand (&) indicates that the 
following character is an address-mode character, and 
offset is the number of words, bytes, or bits added to 
the base-address (as specified by the address-mode 
character) . 

The address-mode character specifies the type of offset 
you want to enter (words, bits, or bytes). You can use 
the address-mode character with both base-address and 
offset, or with the base-address alone, or with the 
offset alone. When you enter the Debugger, the 
default address mode references a 16-bit word. You can 
change this default mode with the MODE command 
described in Chapter 4. When you use the 
address-mode character in an address, it temporarily 
overrides the previously-set default address mode, but 
is active only for the expression you are entering. 



The address-mode characters are: 

Character Action 

W Offset references a 16-bit word. 

Y Offset references an 8-bit byte. 

I Offset references a single bit. 

Examples: 

Given the following locations in the user process area: 

Address Contents 

001400 001500 

001401 000007 

001402 005001 

001403 001600 

001404 000050 

1 400 &W 1:000007 + 

adds 1 to base-address 1 400 and displays its contents. 

1402&W-1: 000007 + 

adds -1 to base-address 1 402 and displays its contents. 

Note that in both of the above examples, the offset 
added to the base-address is in words (&W). 

1401 &Y7: 050 + 

adds 7 bytes (&Y) to base-address 1 401 and displays the 
referenced byte (second byte in 1404). 

1400&I6: 7 + 

adds 6 bits to base-address 1400 and displays the 
referenced bit (bit 6 in location 1400). 



093-000195-02 



3-1 



Debugger Addressing 



DataGeneral 

SOFTWARE DOCUMENTATION 

1 400 &W: 001500 + 

displays the contents of location 1 400. When you omit 
the offset from the address, the offset is assumed to be 
0. 

1400&Y: 003 + 

displays byte (left byte) of location 1 400. 

&Y3003: 007 + 

displays right byte of word 1401 (byte 3003 in your 
address space). When you omit the base-address, it is 
assumed to be 0. 

&Y 1401*2 + 1: 007 + 

also displays right byte of word 1 401 . 

&l 30006: 1 + 

displays bit 6 of word 1400 (bit 30006 in your address 
space). 

1400:007500 + 

In this example the address-mode character is omitted, 
so the Debugger used the previously-set address mode 
(in this case, word addressing). 



Licensed Material - Property of Data General Corporation 

DOT Symbol (Period) 

The DOT symbol (.) is the address of the last location 
referenced by a Display or Modify command (see 
Chapter 4), and you can use it in any valid Debugger 
expression. If you use it as part of an address that 
contains an address-mode character, or in an arithmetic 
expression, then the Debugger uses only the 
base-address portion of the address of the 
last-referenced location. 



Examples: 

1400: 001500 + 
..001500 + 

. + 2:005001 + 

.&Y5:050 + 

1400:007500 + 
@. + 3= 1503 



End of Chapter 



3-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Chapter 4 
Debugger Commands 



Breakpoint-Related Commands 

When an executing program encounters a breakpoint, 
it immediately passes control to the Debugger before 
executing the instruction at the breakpoint location. 
You can then key in debugging commands to examine 
and modify memory locations, accumulators, the carry 
bit, and the program counter. Then you can restart the 
program at the breakpoint, or at any other location 
within the program. 

Set a Breakpoint 

You can set as many breakpoints as you need, and you 
can specify if a breakpoint is conditional. For a 
conditional breakpoint, you supply an expression as 
part of your breakpoint-setting command. When the 
breakpoint is reached, the Debugger evaluates the 
expression and either skips or stops at the breakpoint 
according to the result of the evaluation. Figure 4-1 is a 
diagram of the logic for breakpoints set with Debugger. 

To set a breakpoint, key in a breakpoint command in 
the following format: 

B [address] [;breakpoint-condition][;breakpoint-count] } 

where breakpoint-condition and breakpoint-count can be 
any valid Debugger expression, and address must be 
the address of a 16-bit word. 



The Debugger will: 

1. Place the breakpoint at the location specified by 
address. If address is omitted, the Debugger will 
place the breakpoint at the last-referenced word. 

2. Analyze and save the breakpoint-condition as a 16-bit 
unsigned integer. This tells the Debugger the 
circumstances under which the breakpoint will be 
taken. If you leave out breakpoint-condition, the 
breakpoint is unconditional. 



3. Analyze and save the breakpoint-count. This is the 
number of times that the Debugger will bypass the 
breakpoint (when the breakpoint-condition is true) 
before taking it. If there is no breakpoint-count, the 
Debugger automatically sets the count to 1. 

4. When your executing program encounters the 
breakpoint, the Debugger evaluates the 
breakpoint-condition in terms of the existing 
program state (accumulators, program counter, 
contents of location, etc.). If the evaluation of the 
breakpoint-condition produces a zero as the result, 
the Debugger will skip the breakpoint and proceed 
with the program. Only if the result is nonzero 
(true) will the Debugger decrement the 
breakpoint-count. When the breakpoint-count reaches 
zero, the Debugger will take the breakpoint, stop 
execution of the program, and reset the 
breakpoint-countto 1. 




Take breakpoint 
and reset 
breakpoint 
count to 1 



Figure 4-1. Breakpoint Logic Diagram 



093-000195-02 



4-1 



Breakpoint-Related Commands 



DataGeneral 

SOFTWARE DOCUMENTATION 



NOTE: You must specify breakpoints only at 
executable instructions. Do not set 
breakpoints at the following locations: data 
words, instructions modified during program 
execution, or the second word of a two-word 
instruction. 

Examples: 

B447) 

Set unconditional breakpoint at location 447. 

B447;#0%EQ%36) 

Set conditional breakpoint at location 447. (See 
Chapter 2 for a description of these logical operators.) 
Note that breakpoint count is omitted, so the Debugger 
automatically sets the count to 1. When the breakpoint 
is reached, the Debugger evaluates the 
breakpoint-condition as follows: 

• Compare the contents of accumulator against the 
constant value 36. 

• If the result is nonzero (true), take the breakpoint. 

• If the evaluation result is zero (false), skip the 
breakpoint and do not alter the breakpoint count. 

B447;@1503%GT%0%OR%#3%NE%6) 

Same type of conditional breakpoint as above. The 
Debugger evaluates the breakpoint-condition as 
follows: if the contents of location 1 503 are greater 
than 0, or if accumulator 3 does not contain 6, take the 
breakpoint. 

B447;;6) 

Set unconditional breakpoint. Note that if you omit a 
breakpoint-condition and include a breakpoint count 
you must include an additional semicolon (;). In this 
example, the count is set to 6. Thus, the program will 
pass through the breakpoint 6 times before the 
Debugger takes the breakpoint; but the Debugger will 
decrement the count each time the program passes 
through it, until it equals zero. When the count equals 
zero, the Debugger takes the breakpoint, then resets 
the count to 1. In this way, you can set the breakpoint 
count to skip breakpoints as required. 

B447;#0%NE%0;6) 

Set conditional breakpoint; the breakpoint-count is set 
to six. Each time the Debugger evaluates the 
breakpoint-condition and the result is nonzero (true), 
it decrements the count by one. When the count equals 
0, the Debugger takes the breakpoint. 



Licensed Material - Property of Data General Corporation 

447:001500 + 
B) 

The first command displays the contents of location 
447. The following B command sets an unconditional 
breakpoint at location 447. 

NOTE: Breakpoint commands do not apply to the 
Disk File Editor. 



Examine Breakpoints 

To help you examine breakpoints, the Debugger 
assigns each one a number in the order in which you set 
them. The Debugger will display this number when the 
breakpoint is taken, or when you request the Debugger 
to display the existing breakpoints (see below). The 
Debugger returns the breakpoint identification number 
as: 

Inumber 

Because Inumber is a symbol for the breakpoint's 
location, you can use it interchangeably with the 
location address in any valid Debugger expression. 



Example: 

Assume you are setting the first breakpoint: 

1 400: 0340 J 6 + (Display contents of location 1 400. ) 

B) (Set unconditional breakpoint at 

location 1400. Since this is the first 
breakpoint, the Debugger assigns the 
value !0 to this breakpoint.) 

!0= 1400 (Display the value of the breakpoint 

identification number.) 

!0: 034016 + (Display the breakpoint location's 
contents.) 



To display a complete list of your program breakpoint 
locations, key in the following command: 



?B) 



Example: 

?B) 

!0 7554 (where 7554 is the breakpoint address) 

11 7553 6 (where 6 is the current breakpoint count 

value) 



4-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 

Delete Breakpoints 

There are two different commands which you can use 
to delete breakpoints. To delete one or more specific 
breakpoints, key in the following command: 

DB address [; address] ...) 

where address is the previously-set breakpoint address. 

Examples: 

DB 7553 ) 

DB7554;7553) 

DB !0;7553 ) 

Note that you can use the breakpoint identification 

number when deleting breakpoints. To delete all 

previously-set breakpoints, key in the following 
command: 

NOBRK) 

Start User Program Execution 

To start or proceed with execution of your program, 
key in a Start User Program Execution command in 
this format: 

P [breakpoint-count] } 

The Debugger starts your program execution from the 
location contained in the program counter. 

If you are at a breakpoint, you can change the 
breakpoint-count by keying in breakpoint-count. It can 
be any valid Debugger expression. 

NOTE: "P" commands do not apply to the Disk File 
Editor. 

Examples: 

P) 

Starts or continues program execution with the 
instruction whose address is in the program counter. 
#P is a temporary variable maintained by the Debugger. 
It represents the contents of the current program 
counter. If you want to start program execution at a 
point other than the one in the current program 
counter, change the temporary variable representing 
the current program counter (#P). Use the SET 
command described later in this chapter. Temporary 
variables are described under the SET command. 



P3) 



DataGeneral 

SOFTWARE DOCUMENTATION 

This assumes that your program is halted at a 
breakpoint. The command resets the breakpoint count 
to 3. 



Set Variable Command 

To change the value of an existing temporary variable, 
or to create a new one, key in the following command: 

SET variable-name; expression) 

where expression is any valid Debugger expression, 
and variable-name is the name of the variable you wish 
to change or create. The Debugger will evaluate 
expression and set the result as the value of 
variable-name. If variable-name does not already exist, 
the Debugger will create it, then assign it the value of 
expression. Note that you also use this command to 
modify the accumulators ( #0, #1 , #2, #3 ) the carry bit 
( #C ), and the program execution address ( #P ). 

Examples: 

SET #0;-1 

changes the value of accumulator to -1 . 
SETFOO;62 

changes the value of FOO to 62. If FOO does not exist, 
the Debugger creates it and assigns it a value of 62. 

Display Accumulator Command 

To display the contents of accumulators through 3, 
key in the following command: 

?A) 

Example: 

?A) 

# = 066666* 1 = 000001 # 2 = 000007 # 3 = 000011 



Location-Related Commands 



Display Contents of a Location 

To display the contents of a location, key in the 
following command: 

[address]: 

where address is any valid Debugger expression. 

The Debugger displays the contents of the location 
referenced by address in the current display modes 



093-000195-02 



4-3 



Location-Related Commands 



DataGeneral 

SOFTWARE DOCUMENTATION 

(display modes are explained in the next command). If 
the address is omitted, the Debugger uses the data 
contained in the last displayed word as the address, and 
displays the contents of that location. 

Examples: 

31 05: 000050 + 

displays contents of location 31 05. 

.000007 + 

uses the contents of the last word as the address and 
displays its contents. 

Additional examples of displaying a location's contents 
are in Chapter 2. 

Modify Contents of a Location 

To modify the contents of a location, key one of the 
following commands: 

[address;] expression ) 
[address;] expression (CR/LF) 
[address;] expression (SHIFT-N) 

where address and expression can be any valid Debugger 
expression. 

If you terminate the command with new-line ), the 
Debugger modifies the contents of the location and 
displays the prompt ( + ) again. If you terminate the 
command with (CR/LF), the Debugger modifies the 
location's contents and displays the contents of the next 
location; if you use |, the Debugger modifies the 
location's contents, and displays the contents of the 
previous location. 

The Debugger evaluates expression and stores its 
value in the location specified by address. If you omit 
the address, it stores the expression's value in the 
last-displayed location. In most cases you will want to 
examine a location before you modify it. 

• If address or the last-displayed location is a word 
address, expression is stored as a word (16 bits). 

• If it is a byte address, the data is stored as byte (8 
bits). 

• If it is a bit, the data is stored as a single bit. 

If the expression evaluates to a value larger than that 
which will fit in the addressed location (word, byte, or 
bit), the Debugger gives you an error message. 



Licensed Material - Property of Data General Corporation 

Examples: 

1400: 000011 + LDA3 16) 

displays contents of location 1400; then stores the 
instruction LDA 3 1 6 in location 1 400. 

1503&Y1;1 06 (CR/LF) 
1504:401 

replaces the contents of the right byte in location 1 503 
with 106; (CR/LF) causes the Debugger to display the 
contents of location 1504 (401). 

Display the Next Data Item 

After the Debugger displays the contents of a location, 
you can key in a (CR/LF) (ASCII 015) to display the 
next data item. (The command increments the offset 
part of the last-referenced item by 1 (word, byte, or 
bit), and uses that address.) 

Example: 

Given the following addresses and their contents: 

Address Contents 

1 400 005602 

1401 000003 

1402 000050 

1 403 000200 

then, 

MODEW) (changes address mode to 

word addressing) 

1400: 005602 + (CR/LF) (displays locations 1400, then 

1401) 

1401:000003 + (CR/LF) (displays location 1402) 

1402:000050 + 

MODEY) (changes address mode to 

byte addressing) 

1400 &Y: 013 + (CR/LF) (displays left byte, then right 

byte in word 1400) 
1 400 &Y 1:202 + (CR/LF) (displays left byte of location 

1401). 

1401 & Y:000 -4 

We used &Y in the command 1400 &Y: because 1400 
must be identified as a word, not a byte, location. 

Display the Previous Data Item 

When the Debugger displays the contents of a location, 
you can type (SHIFT-N) ( j ) to display the previous 
data item. (This command decrements the offset part 
of the last-referenced item by 1 (word, byte, or bit), 
and uses that address.) 



4-4 



093-000195-02 



Licensed Material - Property of Data General Corporation 

Example: 

Given the same addresses and contents as in the 
previous example, then, 

MODE W) (changes address mode to word 

addressing) 
1 402: 000050+] (displays location 1402, then 

1401) 
1401:000003 + 1 (displays location 1400) 

1400:005602 + 



Display a Range of Data Items 

To display a range of data items (words, bytes, or bits) 
in your address space, key in the following command: 

DISP address-1 ;address-2 [increment] [;condition] ) 

The Debugger searches through all data items 
beginning at address-1 and ending with address-2. It 
successively adds the increment to each address, 
beginning with address-1, to select the locations it 
analyzes. The size of each location (word, byte, or bit) 
is specified by the address-mode character in 
address-1, or by the default mode if you omit the 
address-mode character. If you omit increment, then the 
Debugger uses an increment of 1. 

For each location it selects, the Debugger evaluates 
condition (where condition is also any valid Debugger 
expression). If the result is true (nonzero), then it 
displays the item; otherwise the item is not displayed. If 
condition does not appear in the command, the 
Debugger unconditionally displays all items. Thus, you 
can use condition in this command to search for specific 
items in your address space. 

Examples: 

DISP 1400;1 500) 

displays the contents of all word locations beginning at 
address 1 400 through 1 500. 

DISP 1400;1500;3) 

displays the contents of every third word beginning at 
address 1400 through 1500 (i.e., 1400, 1403, 1406, 
etc.). 

DISP 1400 &Y1;1 405 &W) 

displays every byte beginning with the right byte in 
location 1 400 and ending with the left byte in location 
1405. 



DataGeneral 

SOFTWARE DOCUMENTATION 



DISP 1400;1415;;@.%NE%0) 

displays the contents of every location whose contents 
are not equal to 0. Note that if you omit the increment 
and include a condition, you must insert an additional 
semicolon in place of the increment. The DOT symbol 
references the location currently being analyzed by the 
DISP command. 

DISP 1 400 &Y1 ;1 430&W;2; @.%EQ% #3) 

displays the contents of every other byte, starting with 
the right byte of word 1 400 and ending with the left 
byte in word 1 430, if the contents of the byte are equal 
to the contents of accumulator 3. 

Suppress Symbols 

To suppress symbols defined within a range of 
addresses, use the command: 

NOSYM expressionl ;expression2) 

where expression is any valid Debugger expression. 

The Debugger will disregard any symbol defined 
between expressionl and expression2. This will help 
you avoid confusion caused by a large number of 
symbols for the locations you are using. 

Example: 

Given the following addresses, symbols, and contents: 

Address Symbol Contents 

1 400 QAT 005602 

1401 QAT+1 000003 

1402 QAT + 2 000050 

1 403 FUM 000200 

1404 FUM -hi 000073 

1405 FUM + 2 000652 

1406 ZRK 003020 

Without NOSYM, the dialog involved in displaying the 
data would be: 

^ 400: 005602 + (CR/LF) 
QAT +1:000003+ (CR/LF) 
QAT +2:000050+ (CR/LF) 
FUM:000200 + (CR/LF) 
FUM +1:000073 + (CR/LF) 
FUM+2:000652+ (CR/LF) 
ZRK:003020 + 



093-000195-02 



4-5 



Location-Related Commands 



DataGeneral 

SOFTWARE DOCUMENTATION 

The NOSYM command, however, will make the 
Debugger ignore the symbols defined within the 
specified range: 

NOSYM QAT;ZRK) 
1 400:005602+ (CR/LF) 
Q AT +1:000003+ (CR/LF) 
QAT+ 2:000050+ (CR/LF) 
QAT+ 3:000200+ (CR/LF) 
QAT+ 4:000073+ (CR/LF) 
QAT+ 5:000652+ (CR/LF) 
ZRK:003020 + 



Display an ASCII String 

To display an ASCII string, key in the following 
command: 

DSTR byte-address [;length] ) 

Byte-address is the address of the first byte of the 
string to be displayed, and can be any valid Debugger 
expression. If byte-address does not contain an 
address-mode-character, the Debugger uses 
byte-address as a byte offset. This allows you to 
reference the contents of a location to get a byte 
address for display. 

The byte string must be terminated by a null. If the 
byte string is greater than 131 characters, the Debugger 
will display only 131 characters. If you want to display 
fewer than 131 characters, specify length for the 
maximum number of characters you want to display. 

Examples: 

Given the following addresses and their contents: 

Address Contents 



507 


001220 


(Byte address 
of word 510) 


510 


040502 


(AB) 


511 


041504 


(CD) 


512 


042506 


(EF) 


513 


000000 


(NULL,NULL) 



then, 

DSTR 1220) 
ABCDEF 

DSTR @507;3) 
ABC 

DSTR510&Y 1) 
BCDEF 



Licensed Material - Property of Data General Corporation 

Mode-Related Commands 

The Debugger always displays the contents of locations 
according to four types of display submodes: format, 
radix, shift and sign. (This is in addition to the address 
mode, which allows you to access the contents of 
words, bytes, or bits.) The /om?<7f submode defines the 
data representation (numeric, ASCII, symbolic, etc.); 
the radix submode defines the base of the number 
system used; the shift submode positions the data 
within the word; and the sign submode specifies signed 
or unsigned numbers. Once you set a display or address 
submode, it will be maintained until you change it. 





FORMAT SUBMODES 1 


Format Submode 
Character 


Displays data as: 


F 


A 16-bit numeric constant. 


H 


An 8-bit numeric constant. 


A 


A pair of ASCII characters. 


S 


A symbol plus offset. 


N 


An instruction. 


P 


Single-precision floating-point data. 


Q 


Double-precision floating-point data. 



When you enter the Debugger, the default format 
submode is F (16-bit numeric constant). 





-RADIX SUBMODES 


Radix Submode 


Action: 


Character 




B 


Display data in binary format. 


O 


Display numeric constants in octal. 


D 


Display numeric constants in decimal 
with a trailing period. The presence or 
absence of a trailing period lets you 
see at a glance whether numeric 
constants are octal or decimal. 


X 


Display numeric constants in 
hexadecimal (base 16). 



When you enter the Debugger, the default radix 
submode is O (octal). 



4-6 



093-000195-02 



Licensed Material - Property of Data General Corporation 

You can specify shifted data with the character: 
SHIFT SUBMODE 



DataGeneral 

SOFTWARE DOCUMENTATION 



Character 

T expression 



Action: 

Display data shifted the number of 
bits specified in expression. 
Expression can be -15 to +15 bits. 
If expression > 0, the data is shifted 
left; if < 0, the data is shifted right. 



Sign Submode 


- SIGN SUBMODES . 

Action: 


Character 




US 


Display constants without regard 
to sign (i.e., as 16-bit integers). 


SI 


Interpret the sign bit when 
displaying constants. The 
Debugger will display a negative 
number with a minus sign 




preceding it. 



When you enter the Debugger, the default sign 
submode is US (unsigned). 



Address Submode 
Character 


ADDRESS MODES 1 

Action: 


W 


Address offset references a 16-bit 
word. When you display data in 
this mode, you will display a 16-bit 
word. 


Y 


Address offset references an 8-bit 
byte. When you display data in this 
mode, you will display an 8-bit 
byte. 


1 


Address offset references a single 
bit. When you display data in this 
mode, you will display a single bit. 



When you enter the Debugger, the default address 
mode is W (word addressing). 

To change the default format, radix, sign and address 
mode characters, key in the following command: 

MODE mode-character [;mode-character] ...) 

(Of course, you can select only one mode character for 
each of the four submode, and one address mode, 
types, for a maximum of five mode-character 
arguments per MODE command.) 



Examples: 

MODED:SI) 

changes the radix and sign submodes. 

MODESI;Y) 

changes the sign submode and address mode. 

MODEY;T-3;US;X;H) 

changes all submodes and the address mode. 

You can temporarily change the address mode for any 
address by typing an ampersand (&) and the new 
address mode character after the address. For example, 
assume that W is the current address mode: 

73: 020111+ 73&Y: 040 + 73&I: + 

The first command displays the contents of location 73 
in the default (word) mode; the second command 
displays the contents of 73's left byte; the third 
command displays the contents of 73's bit 0. Because 
an offset address was omitted in the Y and I commands, 
the Debugger assumed an offset of 0, and dealt only 
with byte (left byte) and bit of location 73. 

The default address mode remains W after these 
commands. 

Display Current Display Modes 

To display the current display modes, key in the 
following command: 

?M) 

Example: 

?M) 
WFOUS 

Display Last Item with Different Display 
Modes 

To redisplay the last displayed item in different display 
modes, enter one or more mode-changing characters in 
the format: 

mode-character [;mode-character] ... (ESC) 

where ESC is the ESC key on your console. 

Example: 

1400:041520 + A(ESC) CP (displays 041520 as two 

ASCII characters) 



093-000195-02 



4-7 



Location-Related Commands 



DataGeneral 

SOFTWARE DOCUMENTATION 

Floating-Point Accumulator-Related 

Commands 

Set Floating-Point Accumulator 

To set a floating-point accumulator, key in the 
following command: 

SFP expression-1 ;expression-2) 

where expression-1 is the number of the floating point 
accumulator: 



= floating-point accumulator 
= floating-point accumulator 1 
= floating-point accumulator 2 
= floating-point accumulator 3 



expression-2 is the value to be stored in the 
accumulator. 

Examples: 

SFP0;29.6) 

SFP 0;041 035 114631 114631 114631) 

Both of these commands will store the same value in 
floating-point accumulator 0. If you enter a series of 
integers in the accumulator, the Debugger stores them 
in four parts of the floating-point accumulator in the 
order you entered them. If you enter fewer than four 
integers, the remaining portions are set to zero. Thus, 
if you are dealing with single precision numbers, enter 
only two values. The Debugger will set the unused 
parts of the floating-point accumulator to zero. 

Display Contents of a Floating-Point 
Accumulator 

You can display the contents of one or all of the 
floating-point accumulators by issuing the following 
command: 

IF [number]) 

where number is the number of the accumulator whose 
contents are to be displayed. If number is omitted, the 
contents of all floating-point accumulators are 
displayed. 

NOTE: This command does not apply to DEDIT. 

You can examine the floating-point accumulators only 
when the floating-point unit is in use; i.e., the current 
task must have a floating-point save area defined. 



Floating-Point Status 

Words 1 and 2 of the floating-point status are accessible 
by using the temporary symbols # FS1 and # FS2. 



Licensed Material - Property of Data General Corporation 

Display Linked Elements 

If you have elements on a linked list, you can display 
any or all of them by typing the following command: 

LLIST address-of-1 st-element; [link-offset] 
; [display-start-address]; [display-stop-address] 
; [display-condition]; [terminator] 
; [maximum-chain-length] ) 



where: 



means: 



address-of-1 st-element the address of the first 
element in the linked list. 



link-offset 



display-start-address 



display-stop-address 



display-condition 



offset into the element 
containing the link. If you 
omit this variable, it defaults 
toO. 

a Debugger address indicating 
the location within the 
element where the Debugger 
is to start data display (NOTE: 
this variable must be an offset, 
not an octal address). The 
Debugger adds this offset to 
the address of the current list 
element. The address mode 
determines whether a word, 
byte or bit is displayed. If you 
omit this variable, the default 
is the link offset. 

a Debugger address indicating 
the location within the 
element where the Debugger 
is to end data display. The 
address mode of this address 
will not change the data size 
displayed. If you omit this 
variable, the default is the 
start-address; data is displayed 
in single units automatically. 

You can include a logical or 
arithmetic expression to 
govern the display operation. 
It will be evaluated like any 
other Debugger expression. 
display-condition is analyzed 
after the Debugger finds the 
element, but before it displays 
data. If the result of the 
expression is (false) the 
Debugger does not display the 
element. It continues to 
search through the chain. You 
can use the DOT symbol (.) to 



4-8 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



display-condition 



terminator 



maximum-chain-length 



represent the address of the 
element. For example, you 
could examine status bits by 
setting a condition such as: 

(. + 1&I0)%EQ% 1 

This test bit of word 1 of 
each element in the linked list 
before displaying it. 

the terminator in the last link 
word. If you omit this 
variable, the Debugger will 
treat a or -1 as the 
terminator. 

If you do not include a value 
here, the default is 32 
(decimal). 



NOTE: If you omit a variable, you must still include 
the semicolon that precedes it. 



Compute an Expression and Display its 
Result 

To compute an expression and display its result, key in 
the following command: 

expression [;mode-character] ...= 

where expression is any valid Debugger expression. 

The Debugger evaluates the expression and displays its 
value immediately following the equal sign. It also 
stores the result in temporary variable # R. 

Examples for computing an expression and displaying 
its value are contained in Chapter 3. 

You can evaluate an expression and display its result in 
whatever mode you wish. To do so, key in the mode 
characters. If mode characters are omitted, result is 
displayed as a 16-bit octal constant. 

Interpret an Error Code 

The Debugger will display the text of an error message 
if you key in the following command: 

MES error-code) 

where error-code is any valid Debugger expression. 
The Debugger will display the text corresponding to 
this code on your console. 



Example: 

Assume accumulator contains the value 25 in error 
code: 

MES #0} 

FILE DOES NOT EXIST 

Append a Symbol Table 

The Debugger automatically uses your program's 
symbol table when you are debugging. You can, 
however, add additional symbols by entering the 
following command: 

STAB) 

SYMBOL FILENAME? symbol-table-pathname 

The Debugger then adds and uses the symbols in 
symbol-table-pathname during the debugging session. 

Example: 

STAB) 

SYMBOL FILENAME? XTRSYMS.ST) 

This command includes the symbols in the file 
XTRSYMS.ST as part of the debugging symbols. 

LOG Commands 

You can have all Debugger dialog saved in a file for 
later examination by typing: 

LOG) 

to which the Debugger will reply: 

FILENAME? 

Type the name of the file you want the dialog to be sent 
to from this point on. To close the file so that you can 
save it for later use, or enqueue it for printing, type the 
command: 

CLOSE) 

Debugging Shared Libraries 

To debug a shared library, key in the following 
command before you attempt to set a breakpoint. 

SHARE) 

FILENAME? library-name) 

where library-name is an ASCII string naming the 
library to be debugged. You must give this command or 
you will not be able to set breakpoints in the library. 



093-000195-02 



4-9 



Debugging Shared Libraries 



DataGeneral 

SOFTWARE DOCUMENTATION 



Licensed Material - Property of Data General Corporation 



You may set breakpoints in any part of the shared 
library which your program uses, whether or not the 
code is actually in your process area. After the code has 
been loaded, you may examine and change locations 
within it. 

SHARE) 

FILENAME 7FOO.SL) 

Do not debug the original copy of a shared library. In 
general, you should make copies of any shared program 



before you debug it. If your program (or the system) 
fails while you are debugging a shared library, 
breakpoints may be left inserted throughout it. 

Terminate the Debugger 

You can terminate the Debugger and return to the CLI 
by typing the command: 

BYE) 



End of Chapter 



4-10 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Chapter 5 
AOS Disk File Editor (DEDIT) 



The Disk File Editor utility (DEDIT) allows you to 
examine or modify locations in AOS disk files. You can 
edit any kind of file on disk using DEDIT. For 
example, after you have debugged a program, you 
might want to change its program file on disk with 
DEDIT to avoid reassembling and rebinding the source 
program. 

DEDIT uses a subset of Debugger commands. The 
disk version of a program is not executing when you 
run DEDIT; thus Debugger commands which control 
breakpoints, program execution, special Debugger 
variables, and accumulators are meaningless to 
DEDIT. The only Debugger commands you cannot use 
in the Disk File Editor are those that set, display, and 
delete breakpoints, start user program execution and 
set and display special Debugger variables. You can use 
all the rest. 

To execute the Disk File Editor (DEDIT), type the 
following CLI command: 

XEQ DEDIT [/switches] ...pathname) 

pathname 



The pathname of the file you want to 
edit. 



Optional Switches: 

/I = pathname DEDIT (Debugger) commands will 
come from the pathname specified. 
This lets you build a file of Debugger 
commands and apply it with a single 
DEDIT command. The file should 
contain commands in the normal 
format (each command terminated by 
new-line (or CR/LF) in some cases), 
including the last command. 



/S = pathname Include the symbol table file identified 
by pathname (similar to the STAB 
command). 

/L = pathname Save all DEDIT commands in a log file 
identified by pathname (similar to the 
LOG command). 

When DEDIT is running and has successfully loaded 
the file you specified for editing, it displays the prompt: 

+ (the same prompt as for the Debugger) 

You type in commands immediately following the 
prompt, using the Debugger commands and 
expressions described in Chapters 2, 3, and 4 of this 
manual (unless you have used the /I switch). 

When you have finished editing with DEDIT, type 

BYE) 

to return to the CLI. 

CAUTION: If you submit Disk File Editor commands 
in an input file to DEDIT (instead of 
issuing them one by one from a console): 

• Do not insert any characters or spaces 
between a colon command (:) and the 
value to be inserted (the patch value). 
For example: 

1234:STA 0,X will not work 
1234:STA 0,X will work 

• You must end the DEDIT command 
file with a BYE command. 



End of Chapter 



093-000195-02 



5-1 



AOS Disk File Editor (DEDIT) 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Appendix A 
Error Messages 



UNKNOWN COMMAND 

This happens when you enter a command such as: 
1234 instead of 1234: 

The Debugger tries to interpret 1 234 as an instruction 
instead of an address. 



ILLEGAL ADDRESS 

You have asked the Debugger to look at a location not 
in your address base. 



INSTRUCTION CANNOT HAVE BREAKPOINT 

You are trying to put a breakpoint on an SCL 
instruction or an XOP1. This is illegal. 



DATA TOO LARGE FOR ADDRESSED LOCATION 

You are trying to enter a larger number (or longer 
string) than will fit in the addressed location. 



ILLEGAL DISPLAY OR ADDRESS MODE 

You used an undefined display or address mode 
character, or you tried to shift and the expression for 
the number of bits could not be computed. 



NO MORE ROOM FOR SYMBOL TABLES 

The Debugger can have no more than eight symbol 
tables in use, including the DEBUG. ST, which is 
always present. 



UNKNOWN SYMBOL 

You have used a symbol not defined in the symbol file. 

ILLEGAL INSTRUCTION 

You have tried to use as an instruction a symbol that is 
not defined as an instruction. 

NULL EXPRESSION 

You didn't enter anything where an expression of 
some kind is required. 

EXPRESSION TOO LONG OR TOO COMPLEX 

The expression is too long to fit in the Debugger's 
work area. 

UNKNOWN OPERATOR 

You have used an operator other than + ,-,/, etc. 

EXPRESSION SYNTAX OR UNKNOWN SYMBOL 
ERROR 

You have typed in something which the Debugger does 
not know how to interpret, for example: %$AF! 



COMMAND ACCEPTS NO ARGUMENTS 

You have supplied arguments for a command which 
does not use any. 



ILLEGAL COMMAND FOR UTILITY 

This happens when, for example, you try to insert a 
breakpoint while using DEDIT. 



LOG FILE ALREADY OPEN 

You gave the LOG command while a previous LOG 
command was still in operation. 

NO MORE ROOM FOR NO-SYMBOL PAIRS 

The Debugger will not accept more than eight NOSYM 
commands. 

ILLEGAL SYMBOL FILE 

The file given as an argument to a STAB command is 
not a symbol file. 

ILLEGAL BREAKPOINT ADDRESS 

You have referenced a nonexistent breakpoint. 



093-000195-02 



A-1 



Error Messages 



DaiaGeneral 

SOFTWARE DOCUMENTATION 



Licensed Material - Property of Data General Corporation 



NO MORE SHARED LIBRARIES 

You can debug no more than eight shared libraries at a 
time. If you issue a SHARE command when you have 
eight already, you will get this error. 



TOO MANY SHARED SYMBOLS 

You have tried to use more than one symbol from a 
shared library in an expression. This is illegal. 



SHARED SYMBOL NOT CURRENTLY MAPPED 

You have tried to load at a location in a shared library 
not in the address base. 



FLOATING POINT ERROR 

You are trying to set the floating-point accumulator, 
and either the accumulator number is invalid, or one of 
the numbers specified to go in one of the 16-bit parts of 
an accumulator is too large. 



LIBRARY NOT BEING DEBUGGED 

You are trying to set a breakpoint in a library not being 
shared. 



TOO MANY CHARACTERS IN TEMPORARY VARIABLE 
A temporary variable can have at most ten characters. 

ROUTINE IN PROCESS OF LOAD 

You are debugging a multitask program which calls 
routines from a shared library, and the routine you 
want to examine is being loaded at this time. 

FLOATING POINT UNIT NOT IN USE 

You are trying to use the floating-point unit without 
having designated a floating-point share area for the 
specific task. 



End of Appendix 



A-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Appendix B 
DEBUG/DEDIT Command Formats 



This appendix lists all breakpoint commands as a group, 
then lists all other Debugger commands alphabetically. 

Breakpoint Commands 
(Do Not Apply to DEDIT) 

SET A BREAKPOINT 

B [address] [;breakpoint-condition][;breakpoint-count] } 

DISPLAY EXISTING BREAKPOINTS 

?B) 

DELETE ONE OR MORE BREAKPOINTS 

DB address [;address] ...) 

DELETE ALL BREAKPOINTS 

NOBRK) 

All Other Commands 

APPEND A SYMBOL TABLE 

STAB) 

FILENAME? symbol-table-name) 

CHANGE DISPLAY AND ADDRESS MODE 

MODE mode-character [;mode-character] ...) 

CLOSE DIALOG LOG FILE 

CLOSE) 

COMPUTE EXPRESSION AND DISPLAY RESULT 

expression [;mode-character] ...) 

DEBUG A SHARED LIBRARY 

SHARE) 

FILENAME? library-name) 

DISPLAY AN ASCII STRING 

DSTR byte-address ['length]) 



DISPLAY CONTENTS OF ACCUMULATORS 0-3 

(does not apply to DEDIT) 
?A) 

DISPLAY CONTENTS OF A FLOATING-POINT 
ACCUMULATOR (does not apply to DEDIT) 
IF [number] ) 

DISPLAY CONTENTS OF A LOCATION 

[address]: 

DISPLAY CURRENT DISPLAY MODES 

?M) 

DISPLAY LAST ITEM WITH DIFFERENT DISPLAY MODES 

mode-character [mode-character] ...(ESC) 

DISPLAY LINKED ELEMENTS 

LLIST address-of-1 st-element; [link-offset] 
; [display-start-address]; [display-stop-address] 
; [display-condition]; [terminator] 
; [maximum -chain-length] 

DISPLAY NEXT DATA ITEM 

(CR/LF) 

DISPLAY PREVIOUS DATA ITEM 

(SHIFT N) 

DISPLAY A RANGE OF DATA ITEMS 

DISP addressl ;address2 ['increment] '['condition] ) 

INTERPRET AN ERROR CODE 

MES error-code) 

MODIFY CONTENTS OF A LOCATION 

[address;] expression ) or (CR/LF) 



093-000195-02 



B-1 



All Other Commands 



DataGeneral 

SOFTWARE DOCUMENTATION 



Licensed Material - Property of Data General Corporation 



SAVE DIALOG IN A FILE 

LOG) 

FILENAME? log-filename) 

SET FLOATING-POINT ACCUMULATOR (does not apply to 

DEDIT) 

SFP expressionl ;expression2) 

SET THE VALUE OF A TEMPORARY VARIABLE 

SET variablename;expression) 



START USER PROGRAM EXECUTION (does not apply to 
DEDIT) P [breakpoint-count] ) 

SUPPRESS NEW SYMBOLS 

NOSYM expressionl ;expression2 

TERMINATE DEBUGGING/EDITING 

BYE) 



End of Appendix 



B-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Appendix C 
Command Terminator Keys and ANSI and 
Non-ANSI Standard Consoles 



It is important to know whether your consoles are 
ANSI or non-ANSI standard terminals, because this 
determines which key you should press to enter a 
new-line character (octal 012) and a (CR/LF) character 
(octal 015) when using the Debugger or Disk File 
Editor. 

One way to tell is by checking the keyboard to see if it 
has a new-line and a carriage-return key. This usually 
means it is an ANSI standard terminal. If the keyboard 
has a carriage-return key and a line-feed key, it is 
usually a non-ANSI keyboard. 

Here is an example of the three keys: 

+ MODEW) 

+ 1 400: 005602 + (CR/LF) 

1401& W:000003 + 

This user types MODE W, a mode command, and 
terminates it with a new-line character. The user then 
types 1400 and a colon, which displays the contents of 
location 1400. The user then enters (CR/LF). 
(CR/LF) instructs DEBUG/DEDIT to display the next 
location and its contents. 

Your terminal must be properly matched to its device 
characteristics. You can test this by typing the CLI 
command 

CHARACTERISTICS) 

from the console you want to test. The CLI will display 
the mnemonics that represent the characteristics for 
this console. If your terminal is ANSI standard, the 
mnemonic NAS (Not ANSI Standard) should appear 
on the line showing the characteristics that do not apply 
(/OFF). If your terminal is non-ANSI standard, NAS 
should appear on the line showing the characteristics 
that do apply (/ON). 



In the example below, the console is a Model 4010A 
(hard-copy) terminal, which is non-ANSI standard. 

) CHARACTERISTICS) 
IHARDCOPY /LPP=66/CPL=80 
IONISTINAS 

IOFFISFFIEP1ISPO/RAFIRA TIOTT 
IEOLIUCSIL T/ULC/PM/NRM/TO 

If the NAS mnemonic appears on the wrong line for 
your terminal, you can correct it 

A. for this run of your CLI process, by typing the 
command 



CHARACTERISTICS/ 



(S?f} /na s) 



B. or permanently, by having your system manager 
regenerate the operating system to change the 
device characteristics for this console. 

When your console is properly matched to its 
characteristics, on an ANSI terminal you press the 
new-line key to input ASCII 012 (which we call the 
new-line character, ) ) and you press the 
carriage-return key to input ASCII 015 (which we call 
(CR/LF)). On a non-ANSI terminal, you press the 
carriage-return key, which AOS translates to new line, 
ASCII 012. You press the line-feed key which AOS 
translates to (CR/LF), ASCII 015. 

You can use Table C-l to determine whether your 
terminal is ANSI standard or not, if you know the 
model number, and whether the NAS mnemonic 
should be represented as OFF or ON in response to the 
CHARACTERISTICS command. 



093-000195-02 



C-1 



Command Terminator Keys and ANSI and 
Non-ANSI Standard Consoles 



DataGeneral 

SOFTWARE DOCUMENTATION 



Licensed Material - Property of Data General Corporation 



Table C-1. New-Line and CR/LF Keys on ANSI and non-ANSI 

Keyboards 



Console Model Number 


ANSI/ 
non-ANSI 


NAS 


If you press: 


Result: 


Called in AOS Manuals 


401 OA (TTY) 
6040 (TTY) 
40101 (CRT) 
6012 (CRT) 


Non-ANSI 


ON 


RETURN 

key 


Translated 
to 012 


new-line 

) 


LINE 
FEED 

key 


Translated 
to 015 


(CR/LF) 


6052 and 6053 (CRT) 
other 


ANSI 


OFF 


NEW- 
LINE 
key 


012 


new-line 

) 


RETURN 

key 


015 


(CR/LF) 



End of Appendix 



C-2 



093-000195-02 



Licensed Material - Property of Data General Corporation 



DataGeneral 

SOFTWARE DOCUMENTATION 



Index 



Within this index, the letter "f" following a page entry 
means "and the following page". 

+ (prompt) 1-1 

= (keystroke command) 4-9 

! (examine breakpoint) 4-2 

: (keystroke command) 4-3 

t or SHIFT-N (keystroke command) 4-4 

A command 4-3 
address modes 4-7 
address-mode-characters 3-1,4-7 

I (offset reference for single bit) 4-7 

W (offset reference for 16-bit word) 4-7 

Y (offset reference for 8-bit byte) 4-7 
angle brackets 2-4 
append a symbol table 4-9 
%AND% 2-3 

ANSI and non-ANSI terminal differences C-l 
arithmetic operators 2-1 

+ (addition and unary plus) 2-1 

- (subtraction and unary minus) 2-1 

* (multiplication) 2-1 

/ (division) 2-1 

(parenthesis for algebraic expressions) 2-1 
ASCII characters 

inserting 2-4 

values for console keys C-lf 
assembler instructions 2-4 

B command 4-1 
base address 3-1 
Boolean operators 2-3 

%AND% 2-3 

%OR% 2-3 

%XOR% 2-3 
breakpoint commands 4-1 to 4-3 

B (set breakpoint) 4-1 

DB (delete a breakpoint) 4-3 

! (examine breakpoint) 4-2 

NOBRK (delete all breakpoints) 4-3 
breakpoint condition 4-1 
breakpoint-count 4-1 



BYE command 1-1,4-10 
byte addressing 4-7 

change modes 4-7 

CHARACTERISTICS command C-l 

characters, inserting 2-4 

CLOSE command 4-9 

close log file 4-9 

command-code 1-1 

command summary B-lf 

command types 1-1 

comparing values 2-2 

conditional breakpoints 4-1,4-2 

consoles C-lf 

CR/LF (keystroke command) 4-4 

DB command 4-3 
DEBUG command 1-1 
Debugger command formats 1-1 
DEDIT command 5-1 
delete breakpoints 4-3 
dialog, save Debugger 4-9 
disk file editor (DEDIT) 5-lf 
DISP command 4-5 
display 

accumulator 4-3 

an ASCII string 4-6 

floating-point accumulator 4-8 

format 4-6 

linked elements 4-8 

location contents 4-3 

modes command 4-7 

next item 4-4 

previous data item 4-4 

radix 4-6 

range of data items 4-5 

result of an expression 4-9 

shift 4-7 

sign 4-7 

submodes 4-6 
dot symbol (.) 3-2 
DSTR command 4-6 



093-000195-02 



lndex-1 



Index 



DataGeneral 

SOFTWARE DOCUMENTATION 

entering the Debugger 1-1 

%EQ% 2-2 

error messages 4-9, A-l 

examine a breakpoint 4-2 

expressions, 

definition of 2-1 

evaluation of 2-1, 2-3 
expression operators, 

arithmetic 2-1 

Boolean 2-3 

definition of 2-1 

indirect (@) 2-2 

logical 2-2 

?F command 4-8 
file editor, disk 5-1 
floating-point status symbols 4-8 

#FS1, #FS2 4-8 
format submode characters 

(F, H, A,S,N, P,Q) 4-6 

%GE% 2-2 
%GT% 2-2 

I (address mode) 4-7 
indirect operator (@) 2-2 
instructions, Macroassembler 2-4 
interpret an error code 4-9, A-l 

keystroke commands 1-1,1-2 
: 4-3 

CR/LF 4-4 
= 4-9 
| (SHIFT-N) 4-4 

linked elements, display 4-8 
LLIST command 4-8 
LOG command 4-9 
log file 

close 4-9 

open 4-9 
logical operators (for signed integers) 2-2 
logical operators (for unsigned integers) 2-3 
%LE% 2-2 
%LT% 2-2 

?M command 4-7 
Macroassembler instructions 2-4 
MES command 4-9 
mode 4-6f 

address (I, Y, W) 4-7 

changing 4-7 

command (MODE) 4-7 

default 4-7 

format (A, F, H, N, P, Q, S) 4-6 

radix (B, D, O, X) 4-6 

sign (SI, US) 4-7 



Licensed Material - Property of Data General Corporation 

NAS mnemonic C-lf 
%NE% 2-2 
new-line iv 

NOBRK command 4-3 
NOSYM command 4-5 
notation conventions iv 

offset (address) 3-1 
open log file 4-9 
operator 

arithmetic 2-1 

Boolean 2-3 

evaluation order 2-3 

indirect (@) 2-2 

logical 

signed 2-2 
unsigned 2-3 
%OR% 2-3 

P command (start program) 4-3 
prompt ( + ) 1-1 

radix submode characters 

(B,0,D,X) 4-6 
redisplay with different display modes 4-7 

save Debugger dialog 4-9 

set breakpoint 4-1 

SET command 1-2,4-3 

set floating-point accumulator 4-8 

SFP command 4-8 

SHARE command 4-9 

shared libraries 4-9 

shift submode character (T) 4-7 

sign submode characters (US, SI) 4-7 

signed expressions 2-2 

special symbols 

(#P, #C, #0, #1 , #2, #3, ER, #FS1 , #FS2) 1-2 
STAB command 4-9 
start program (P command) 4-3 
suppressing symbols 4-5 

terminating the Debugger 1-1,4-10 
temporary variables 1-2 

%UGE% 2-3 
%UGT% 2-3 
%ULE% 2-3 
%ULT% 2-3 
unconditional breakpoints 4-1,4-2 

W (address mode) 4-7 

%XOR% 2-3 

Y (address mode) 4-7 



lndex-2 



093-000195-02 



Aw DataGeneral 

Software Documentation Remarks Form 



•C 



How Do You Like This Manual? 



Title_ 



No. 



We wrote the book for you, and naturally we had to make certain assumptions about who you are and how you 
would use it. Your comments will help us correct our assumptions and improve our manuals. Please take a few 
minutes to respond. 

If you have any comments on the software itself, please contact your Data General representative. If you wish to 
order manuals, consult the Publications Catalog (01 2-330). 



Who Are You? 



How Do You Use This Manual? 



□ 
□ 
□ 
□ 
□ 

What programming language(s) do you use? 



EDP Manager 

Senior System Analyst 

Analyst/Programmer 

Operator 

Other 



(List in order: 1 = Primary use) 

Introduction to the product 

Reference 

Tutorial Text 

Operating Guide 



Do You Like The Manual? 



Yes 


Somewhat 


No 






□ 


□ 


□ 


Is the manual easy to read? 




D 


□ 


D 


Is it easy to understand? 




□ 


□ 


□ 


Is the topic order easy to follow? 




D 


□ 


□ 


Is the technical information accurate? 




D 


□ 


D 


Can you easily find what you want? 




□ 


□ 


U 


Do the illustrations help you? 




□ 


□ 


U 


Does the manual tell you everything you need to know? 





Comments? 



(Please note page number and paragraph where applicable.) 



From: 



Name 



.Title. 



Address. 



-Company. 
-Date 



SD-00742 



FOLD DOWN 



FIRST 



FOLD DOWN 



FIRST 

CLASS 

PERMIT 

No. 26 

Southboro 

Mass. 01772 



BUSINESS REPLY MAIL 



No Postage Necessary if Mailed in the United States 



Postage will be paid by: 

Data General Corporation 

Southboro, Massachusetts 01 772 



ATTENTION: Software Documentation 

FOLD UP 



SECOND 



FOLD UP 



SD-00742'A 



STAPLE